﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using Espam.Idiomas.Decimo.Tesis.Negocio;
using System.Drawing;

namespace Espam.Idiomas.Decimo.Tesis.Web
{
    public partial class UI_NewTeacher : System.Web.UI.Page
    {
        string validaSession = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
                Response.Cache.SetAllowResponseInBrowserHistory(false);
                Response.Cache.SetNoStore();

                if (Session["userEspamIdiomasVarSession001"] == null || Session["rolEspamIdiomasVarSession003"] == null)
                {
                    validaSession = "NoHaIniciadoSession";
                    Response.Redirect("UI_Login.aspx?validaSession=" + validaSession);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Docente")
                {
                    Response.Redirect("UI_DashboardTeacher.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Administradores")
                {
                    CargarDocentes();
                    cargaddls();
                    btnGuardarDocente.Attributes.Add("onclick", "this.disabled=true,this.value='Procesando...';" + ClientScript.GetPostBackEventReference(btnGuardarDocente, null) + ";");
                    lblvalida.Text = "";
                    lblvalida.Visible = false;
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Alumno")
                {
                    Response.Redirect("UI_DashboardStudents.aspx");
                }
            }
            else
            {
                lblvalida.Text = "";
                lblvalida.Visible = false;
            }
        }
        private void CargarDocentes()
        {
            ListadoDocentes listaDocentes = new ListadoDocentes();
            listaDocentes.estado = "Activo";
            gvDocentes.DataSource = listaDocentes.getDocentes();
            gvDocentes.DataBind();
        }

        protected void btnGuardarDocente_Click(object sender, EventArgs e)
        {
                ListadoDocentes oDocentes = new ListadoDocentes();
                string mensajeCargapicprofile = "";
                string mensajeCargaCV = "";
                string mensaje = "";
                string fileNameFoto = "";
                string fileNameCV = "";
                if (btnGuardarDocente.Text == "Guardar Docente")
                {
                    if (fuFotoPerfil.HasFile)
                    {
                        List<string> lista = new List<string>();
                        string path = Server.MapPath("~/UploadedImagesTeachers/");
                        lista = SaveFile(fuFotoPerfil.PostedFile, path);
                        mensajeCargapicprofile = lista[0];
                        fileNameFoto = lista[1];

                        if (fuCurriculumVitae.HasFile)
                        {

                            path = Server.MapPath("~/UploadedCVTeachers/");
                            lista = SaveFile(fuCurriculumVitae.PostedFile, path);
                            mensajeCargaCV = lista[0];
                            fileNameCV = lista[1];

                        }
                        else
                        {
                            lblvalida.Text = "NO HA CARGADO NINGÚN ARCHIVO";

                        }

                        if (mensajeCargapicprofile == "CARGA CORRECTA" && mensajeCargaCV == "CARGA CORRECTA")
                        {
                            if (string.IsNullOrEmpty(txtApellidos.Text) || string.IsNullOrEmpty(txtDocumento.Text) || string.IsNullOrEmpty(txtNombres.Text) || string.IsNullOrEmpty(txtPassword.Text) || string.IsNullOrEmpty(txtTitulo.Text))
                            {
                                lblvalida.Text = "ERROR AL GUARDAR EL DOCENTE";
                                ActivaError();
                            }
                            else
                            {
                                oDocentes.nombres = txtNombres.Text.ToUpper();
                                oDocentes.apellidos = txtApellidos.Text.ToUpper();
                                oDocentes.documento = txtDocumento.Text;
                                oDocentes.titulo = txtTitulo.Text.ToUpper();
                                oDocentes.cadenaPicPerfil = fileNameFoto;
                                oDocentes.cadenaCV = fileNameCV;
                                oDocentes.idGenero = int.Parse(ddlGenero.SelectedValue);
                                oDocentes.clave = txtPassword.Text;
                                mensaje = oDocentes.SaveDocente();
                                lblvalida.Text = mensaje;
                                if (mensaje == "DOCENTE GUARDADO CORRECTAMENTE")
                                {

                                    ActivaSuccess();
                                    CargarDocentes();
                                    LimpiarCampos();

                                }
                                else
                                {
                                    ActivaError();
                                }
                            }
                        }
                        else
                        {
                            lblvalida.Text = "ERROR AL GUARDAR DOCENTE";
                            ActivaError();
                        }
                    }

                    else
                    {
                        lblvalida.Text = "NO HA CARGADO NINGÚN ARCHIVO";
                        ActivaError();
                    }
                }



                else if (btnGuardarDocente.Text == "Editar Docente")
                {

                    try
                    {
                        if (fuFotoPerfil.HasFile)
                    {
                        List<string> lista = new List<string>();
                        string path = Server.MapPath("~/UploadedImagesTeachers/");
                        lista = SaveFile(fuFotoPerfil.PostedFile, path);
                        mensajeCargapicprofile = lista[0];
                        fileNameFoto = lista[1];

                        if (fuCurriculumVitae.HasFile)
                        {

                            path = Server.MapPath("~/UploadedCVTeachers/");
                            lista = SaveFile(fuCurriculumVitae.PostedFile, path);
                            mensajeCargaCV = lista[0];
                            fileNameCV = lista[1];

                        }
                        else
                        {
                            lblvalida.Text = "NO HA CARGADO NINGÚN ARCHIVO";

                        }

                        if (mensajeCargapicprofile == "CARGA CORRECTA" && mensajeCargaCV == "CARGA CORRECTA")
                        {

                        if (string.IsNullOrEmpty(txtApellidos.Text)||string.IsNullOrEmpty(txtDocumento.Text)||string.IsNullOrEmpty(txtNombres.Text)||string.IsNullOrEmpty(txtTitulo.Text))
                        {
                            lblvalida.Text = "ERROR AL EDITAR EL DOCENTE";
                            ActivaError();
                        }
                        else
                        {
                        oDocentes.valorID = (int)Session["idDocenteespamidio"];
                        oDocentes.nombres = txtNombres.Text.ToUpper();
                        oDocentes.apellidos = txtApellidos.Text.ToUpper();
                        oDocentes.documento = txtDocumento.Text;
                        oDocentes.titulo = txtTitulo.Text.ToUpper();
                        oDocentes.cadenaPicPerfil = fileNameFoto;
                        oDocentes.cadenaCV = fileNameCV;
                        oDocentes.idGenero = int.Parse(ddlGenero.SelectedValue);
                        //oDocentes.idRol = int.Parse(ddlRol.SelectedValue);
                        mensaje = oDocentes.EditDocente();
                        if (mensaje == "DOCENTE EDITADO CORRECTAMENTE")
                        {
                            lblvalida.Text = mensaje;
                            ActivaSuccess();
                            CargarDocentes();
                            LimpiarCampos();
                            Session.Remove("idDocenteespamidio");
                            NuevoDocente();
                        }
                        else
                        {
                            lblvalida.Text = mensaje;
                            ActivaError();
                        }
                       
                        }

                        }
                        else
                        {
                            lblvalida.Text = "ERROR AL GUARDAR DOCENTE";
                            ActivaError();
                        }
                    }

                        else
                        {
                            lblvalida.Text = "NO HA CARGADO NINGÚN ARCHIVO";
                            ActivaError();
                        }
                    }
                    catch (Exception)
                    {

                        Response.Redirect("UI_NewTeacher.aspx");
                        lblvalida.Text = "";
                        lblvalida.Visible = false;
                    }
                }
            }
        
       
        public List<string>  SaveFile(HttpPostedFile file, string path)
        {
            string respuesta = "";
            string name = "";
            string tempfileName = "";
            string pathToCheck = "";
            List<string> lista=new List<string>();
            try
            {
                 string fileExt = Path.GetExtension(file.FileName);
                 if (fileExt == ".jpg" || fileExt == ".png" || fileExt == ".jpeg")
                 {
                     name = file.FileName;
                     pathToCheck = path + name;
                     //lblvalida.Text = "file name: " + fuFotoPerfil.PostedFile.FileName + "</br>" + "Content type: " + fuFotoPerfil.PostedFile.ContentType;
                     if (File.Exists(pathToCheck))
                     {
                         int counter = 2;
                         while (File.Exists(pathToCheck))
                         {
                             tempfileName = counter.ToString() + name;
                             pathToCheck = path + tempfileName;
                             counter++;
                         }
                         name = tempfileName;
                         respuesta = "CARGA CORRECTA";

                     }
                     else
                     {
                         respuesta = "CARGA CORRECTA";
                     }
                     path += name;
                     file.SaveAs(path);
                 }
               
            }
            catch (Exception ex)
            {
                respuesta = ex.Message;
            }
            lista.Add(respuesta);
            lista.Add(name);
            return lista;
        }
        protected void ActivaError()
        {
            lblvalida.Visible = true;
            lblvalida.ForeColor = Color.Red;
        }
        protected void ActivaSuccess()
        {
            lblvalida.Visible = true;
            lblvalida.ForeColor = Color.Green;
        }
        protected void LimpiarCampos()
        {
            txtNombres.Text = string.Empty;
            txtApellidos.Text = string.Empty;
            txtDocumento.Text = string.Empty;
            txtTitulo.Text = string.Empty;
            cargaddls();
            
        }
        protected void cargaddls()
        {
            ListadoGeneros oListadoGeneros = new ListadoGeneros();
            List<Generos> lista = new List<Generos>();
            lista = oListadoGeneros.getGeneros();
            lista.Insert(0, new Generos() { idGenero = 0, genero = "<Eligir un Genero>" });
            ddlGenero.DataSource = lista;
            ddlGenero.DataTextField = "genero";
            ddlGenero.DataValueField = "idGenero";
            ddlGenero.DataBind();
            ListadoRoles oListadoRoles = new ListadoRoles();
            List<Roles> listaroles = new List<Roles>();
            listaroles = oListadoRoles.GetRoles();
            listaroles.Insert(0, new Roles() { idRol = 0, rol = "<Eligir un rol>" });
            //ddlRol.DataSource = listaroles;
            //ddlRol.DataTextField = "rol";
            //ddlRol.DataValueField = "idRol";
            //ddlRol.DataBind();
        }

        protected void gvDocentes_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string mensaje = "";
            ListadoDocentes oDocentes = new ListadoDocentes();
            try
            {
                int index = e.RowIndex;
                int id = (int)gvDocentes.DataKeys[index].Value;
                oDocentes.valorID = id;
                oDocentes.idEstado = 2;
                mensaje = oDocentes.DeleteDocente();
                lblvalida.Text = mensaje;
                if (mensaje=="DOCENTE ELIMINADO CORRECTAMENTE")
                {
                    ActivaSuccess();
                    CargarDocentes();
                    LimpiarCampos();
                    NuevoDocente();
                }
                else
                {
                    ActivaError();
                    CargarDocentes();
                    LimpiarCampos();
                    NuevoDocente();
                }
                
            }
            catch (Exception)
            {

                Response.Redirect("UI_NewTeacher.aspx");
            }
        }


        private void EditarDocente()
        {
            btnCancelar.Visible = true;
            btnGuardarDocente.Text = "Editar Docente";
            //fuFotoPerfil.Enabled = false;
            //fuCurriculumVitae.Enabled = false;
            //fuCurriculumVitae.Visible = false;
            //fuFotoPerfil.Visible = false;
            //lblCV.Visible = false;
            //lblFotoPerfil.Visible = false;
            //row.Visible = false;
            //pass.Visible = false;
            txtPassword.Visible=false;
            txtPassword.Enabled = false;
            lblPass.Visible = false;
        }

        protected void gvDocentes_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<Docentes> listadoDocente = new List<Docentes>();
            GridViewRow row = gvDocentes.SelectedRow;
            int idDocenteespamidio = Convert.ToInt32(gvDocentes.DataKeys[row.RowIndex].Value);
            ListadoDocentes oDocentes = new ListadoDocentes();
            oDocentes.valorID = idDocenteespamidio;
            listadoDocente = oDocentes.GetDocenteById();
            if (listadoDocente.Count > 0)
            {
                txtNombres.Text = listadoDocente[0].nombres;
                txtApellidos.Text = listadoDocente[0].apellidos;
                txtDocumento.Text = listadoDocente[0].documento;
                txtTitulo.Text = listadoDocente[0].titulo;
                ddlGenero.SelectedValue = listadoDocente[0].idGenero.ToString();
                //ddlRol.SelectedValue = listadoDocente[0].idRol.ToString();
                Session["idDocenteespamidio"] = idDocenteespamidio;
                lblvalida.Text = string.Empty;
                lblvalida.Visible = false;
                EditarDocente();
            }
            else
            {
                lblvalida.Text = "NO EXISTE EL DOCENTE";
                ActivaError();
            }
         
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("UI_NewTeacher.aspx");
        }
        protected void NuevoDocente()
        {
            btnGuardarDocente.Text = "Guardar Docente";
            btnCancelar.Visible = false;
            row.Visible = true;
            fuCurriculumVitae.Enabled = true;
            fuFotoPerfil.Enabled = true;
            fuFotoPerfil.Visible = true;
            fuCurriculumVitae.Visible = true;
        }

      
    }
}